package com.dongdongshop.controller;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import com.dongdongshop.data.Result;
import com.dongdongshop.em.ConstantEnum;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

@Controller
@RequestMapping("file")
public class FileController {

	@RequestMapping("upLoadFile")
	@ResponseBody
	public Result upload(@RequestParam("image") MultipartFile image) throws IOException {
		// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
		String http ="https://";
		String endpoint = "oss-cn-beijing.aliyuncs.com";
		String buketName="dongdongshop-zk2021";
		// 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
		String accessKeyId = "LTAI5tSJ9Ua3jhHftrUYpHXc";
		String accessKeySecret = "dfBwhiPS0J8MfjoFjtWorfoQDLkNbI";

		// 创建OSSClient实例。
		OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

		// 填写字符串。
		InputStream inputStream = image.getInputStream();
		//获取图片的名字
		String  filename = image.getOriginalFilename();
		// 创建PutObjectRequest对象。
		// 依次填写Bucket名称（例如examplebucket）和Object完整路径（例如exampledir/exampleobject.txt）。Object完整路径中不能包含Bucket名称。
		PutObjectRequest putObjectRequest
				= new PutObjectRequest(buketName, filename, inputStream);

// 如果需要上传时设置存储类型和访问权限，请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);

// 上传字符串。
		ossClient.putObject(putObjectRequest);
// 关闭OSSClient。
		ossClient.shutdown();
		return Result.build(ConstantEnum.SUCCESS).setResult( http + buketName+"." + endpoint+"/"+filename );
	}
}
